// ImageManager 类负责管理图片的下载、存储和检索功能
package cn.edu.swu.dlx;

import java.io.IOException;
import java.util.*;

public class ImageManager {
    // 使用 HashMap 存储图片名称与保存路径的映射关系
    private Map<String, String> imageMap = new HashMap<>();

    // downloadImage 方法用于下载指定 URL 的图片
    // 参数 url: 图片的网络地址
    public void downloadImage(String url) {
        // 从 URL 中提取文件名（最后一个 '/' 后的部分）
        String fileName = url.substring(url.lastIndexOf('/') + 1);
        //询问是否需要改变图片名称
        System.out.println("是否需要改变图片名称(yes:1 ,no:0)");
        Scanner scanner=new Scanner(System.in);
        int choose= Integer.parseInt(scanner.nextLine());
        if (choose==1){
            System.out.println("请输入图片名称：");
            String names=scanner.nextLine();
            fileName = names;
        }

        // 构建图片保存路径，统一放在 images 目录下
        String savePath = "images/" + fileName;

        try {
            // 调用 FileUtils 工具类的 saveImage 方法下载并保存图片
            FileUtils.saveImage(url, savePath);
            // 将图片名称和路径存入 imageMap 映射中
            imageMap.put(fileName, savePath);
            // 输出下载成功的提示信息
            System.out.println("图片下载成功: " + fileName);
        } catch (IOException e) {
            // 捕获并处理下载过程中可能出现的 IO 异常
            System.out.println("下载失败: " + e.getMessage());
        }
    }

    // listImages 方法用于列出所有已下载的图片
    public void listImages() {
        // 判断 imageMap 是否为空
        if (imageMap.isEmpty()) {
            // 如果没有下载任何图片，则输出相应提示
            System.out.println("暂无下载的图片。");
        } else {
            // 否则遍历 imageMap 并打印所有已下载图片的信息
            System.out.println("已下载的图片列表:");
            for (Map.Entry<String, String> entry : imageMap.entrySet()) {
                System.out.println("图片名: " + entry.getKey() + " 路径: " + entry.getValue());
            }
        }
    }

    // searchImage 方法用于根据图片名称查找已下载的图片
    // 参数 name: 要查找的图片名称
    public void searchImage(String name) {
        // 从 imageMap 中获取对应名称的图片路径
        String path = imageMap.get(name);
        // 判断路径是否存在
        if (path != null) {
            // 如果找到了，输出图片名称和路径
            System.out.println("找到图片: " + name + " 路径: " + path);
        } else {
            // 如果没找到，输出未找到的提示
            System.out.println("未找到图片: " + name);
        }
    }
}
